/**
 * File: IdentifierStore.java
 * Created by: mhaimel
 * Created on: 8 Jul 2009
 * CVS:  $Id: IdentifierStore.java,v 1.2 2009/10/09 15:14:58 mhaimel Exp $
 */
package uk.ac.ebi.curtain.service;

import uk.ac.ebi.curtain.service.impl.IdentifierMemoryStore;

import com.google.inject.ImplementedBy;

/**
 * @author mhaimel
 *
 */
@ImplementedBy(IdentifierMemoryStore.class)
public interface IdentifierStore<I,O> {
	
	boolean hasIdentifier(I input);
	O getIdentifier(I input);
	O getOrAddIdentifier(I input);
	void registerIdentifier(I input, O output);
	Iterable<I> getKeys();
//	void addObserver(Observer observer);
//	void deleteObserver(Observer o);
//	I[] getKeys();
//	O[] getValues();
	
	Integer getSize();
	
	void clear();
	void reset(Integer size);
}
